// pages/saveAddress/saveAddress.js
import config from '../../utils/config';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    address: {
      name: '',
      phone: '',
      detailAddress: ''
    },
    addressId: null,
    region: ['请选择省份', '请选择城市', '请选择区县'],
    regionDisplay: '请选择地区'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if (options.address) {
      try {
        const address = JSON.parse(decodeURIComponent(options.address));
        // 处理省市区
        let region = ['请选择省份', '请选择城市', '请选择区县'];
        let regionDisplay = '请选择地区';
        if (address.province && address.city && address.district) {
          region = [address.province, address.city, address.district];
          regionDisplay = region.join('-');
        }
        this.setData({ 
          address,
          addressId: address.id || null,
          region,
          regionDisplay
        });
      } catch (e) {
        console.error('解析地址信息失败:', e);
        wx.showToast({
          title: '地址信息加载失败',
          icon: 'none'
        });
      }
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  clearDetailAddress() {
    this.setData({
      'address.detailAddress': ''
    });
  },

  bindRegionChange: function(e) {
    const selectedRegion = e.detail.value;
    this.setData({
      region: selectedRegion,
      regionDisplay: selectedRegion.join('-')
    });
  },

  formSubmit(e) {
    const token         = wx.getStorageSync('token');

    if (!token) {
      wx.navigateTo({
        url: '/pages/login/login'
      });
    }
    const formData = e.detail.value;
    // 检查必填项
    if (!formData.name || !formData.phone || !formData.detailAddress) {
      wx.showToast({
        title: '请填写完整信息',
        icon: 'none'
      });
      return;
    }
    // 检查省市区
    if (!this.data.region || this.data.region.length !== 3 || this.data.region.includes('请选择省份') || this.data.region.includes('请选择城市') || this.data.region.includes('请选择区县') || this.data.region.includes('请选择地区')) {
      wx.showToast({
        title: '请选择地区',
        icon: 'none'
      });
      return;
    }
    // 这里可以添加手机号格式验证
    const phoneRegex = /^1[3-9]\d{9}$/;
    if (!phoneRegex.test(formData.phone)) {
      wx.showToast({
        title: '手机号格式不正确',
        icon: 'none'
      });
      return;
    }
    // 组装数据，带上省市区
    const submitData = {
      ...formData,
      province: this.data.region[0],
      city: this.data.region[1],
      district: this.data.region[2]
    };
    if (this.data.addressId) {
      submitData.id = this.data.addressId;
    }
    wx.request({
      url: `${config.baseUrl}/saveAddress`, // 使用同一个保存地址接口
      method: 'POST',
      header: {
        Authorization : token
      },
      data: submitData,
      success: (res) => {
        if (res.data && res.data.code === 200) {
          if (res.data.data && res.data.data.id) {
            wx.setStorageSync('newAddressId', res.data.data.id);
          }
          wx.showToast({
            title: this.data.addressId ? '地址更新成功' : '地址保存成功',
            icon: 'success'
          });
          // 返回上一页并刷新地址列表
          wx.navigateBack();
        } else {
          wx.showToast({
            title: this.data.addressId ? '地址更新失败' : '地址保存失败',
            icon: 'none'
          });
          console.error('保存地址失败:', res);
        }
      },
      fail: (err) => {
        wx.showToast({
          title: '请求失败，请重试',
          icon: 'none'
        });
        console.error('请求保存地址失败:', err);
      }
    });
  }
})